package com.hxwm.hwdbtool.controller.menu;

import javafx.collections.ObservableList;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.TreeItem;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import lombok.Data;

/**
 * @program: hwdbtool
 * @ClassName DataSourceNavMenuUI
 * @description:
 * @author: hxwm
 * @create: 2024-05-22 22:47
 * @Version 1.0
 **/
@Data
public class DataSourceNavMenuUI {
    public ContextMenu createContextMenu(TreeItem<String> treeItem) {
        ContextMenu contextMenu = new ContextMenu();
        String value = treeItem.getValue();
        TreeItem<String> parent = treeItem.getParent();
        ObservableList<TreeItem<String>> children = treeItem.getChildren();

        if (parent.getValue() == null) {
            // 根节点菜单
            contextMenu.getItems().add(new MenuItem("创建"));
            contextMenu.getItems().add(new MenuItem("编辑连接"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("连接"));
            contextMenu.getItems().add(new MenuItem("断开/重新连接"));
            contextMenu.getItems().add(new MenuItem("断开连接"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new MenuItem("删除"));
            contextMenu.getItems().add(new MenuItem("重命名"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refreah"));
        } else if ("数据库".equals(value)) {
            // "数据库" 节点菜单
            contextMenu.getItems().add(new MenuItem("新建数据库"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refreah"));
        }else if("数据库".equals(parent.getValue())){
            contextMenu.getItems().add(new MenuItem("创建"));
            contextMenu.getItems().add(new MenuItem("查看数据库"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("导入数据"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("生成SQL"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new MenuItem("删除"));
            contextMenu.getItems().add(new MenuItem("重命名"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refreah"));
        } else if ("表".equals(value)) {
            // "表" 节点菜单或数据库的子节点
            contextMenu.getItems().add(new MenuItem("新建表"));
            contextMenu.getItems().add(new MenuItem("查看表"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("导入数据"));
            contextMenu.getItems().add(new MenuItem("工具"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("生成SQL"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refresh"));
        }else if("表".equals(parent.getValue())){
            contextMenu.getItems().add(new MenuItem("创建"));
            contextMenu.getItems().add(new MenuItem("查看表"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("导出数据"));
            contextMenu.getItems().add(new MenuItem("导入数据"));
            contextMenu.getItems().add(new MenuItem("工具"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("生成SQL"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new MenuItem("复制高级信息"));
            contextMenu.getItems().add(new MenuItem("删除"));
            contextMenu.getItems().add(new MenuItem("重命名"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refreah"));
        }else if ("列".equals(value)) {
            // "列" 节点菜单或表的子节点
            contextMenu.getItems().add(new MenuItem("新建列"));
            contextMenu.getItems().add(new MenuItem("查看列"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("导出数据"));
            contextMenu.getItems().add(new MenuItem("导入数据"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("生成SQL"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refresh"));
        } else if("列".equals(parent.getValue())){
            contextMenu.getItems().add(new MenuItem("新建列"));
            contextMenu.getItems().add(new MenuItem("查看列"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("工具"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("复制"));
            contextMenu.getItems().add(new MenuItem("粘贴"));
            contextMenu.getItems().add(new MenuItem("删除"));
            contextMenu.getItems().add(new MenuItem("重命名"));
            contextMenu.getItems().add(new SeparatorMenuItem());
            contextMenu.getItems().add(new MenuItem("Refreah"));
        }
        return contextMenu;
    }

}